home *** CD-ROM | disk | FTP | other *** search
- property pSpr, pLidUpMember, pOrigMember, pCapacity, pGlassMask, pGlassIce, pNoShadow, pPouring, pContents, pContentString, pTilt, pLastDest, pGlassType, pOverItem, pTimer, pLidUp, pLidTimer, pHotRect, pOrigInk, pLidUpInk
- global gFloatSprite
-
- on beginSprite me
- pGlassType = #mixingGlass
- pSpr = sprite(me.spriteNum)
- pGlassMask = sprite(me.spriteNum + 1)
- pGlassIce = sprite(me.spriteNum - 1)
- pOrigMember = pSpr.member
- pOrigInk = 8
- pSpr.ink = pOrigInk
- pLidUpInk = 36
- pLidUpMember = nextMember(pSpr.member, -1)
- pNoShadow = nextMember(pSpr.member, -2)
- pCapacity = getCapacity(pGlassType)
- mEmptyGlass(me)
- pLidUp = 0
- pOverItem = 0
- mReplaceIt(me)
- pHotRect = rect(351, 312, 380, 377)
- end
-
- on mEmptyGlass me
- global gLastVessel
- if gLastVessel = pGlassType then
- setPourClockText(" The Mixing Glass is Empty")
- end if
- pContents = [:]
- pContentString = EMPTY
- sendSprite(pGlassMask, #mEmptyGlass)
- sendSprite(pGlassIce, #mEmptyGlass)
- pLastDest = VOID
- end
-
- on mEmptyIfLastVessel me, barGlassSprite
- if pLastDest = barGlassSprite then
- mEmptyGlass(me)
- end if
- end
-
- on mSetOrigMember me
- pSpr.member = pOrigMember
- pSpr.ink = pOrigInk
- end
-
- on mSetLidUpMember me
- pSpr.member = pLidUpMember
- pSpr.ink = pLidUpInk
- end
-
- on mReplaceTop me
- if pLidUp or (pSpr.member <> pOrigMember) then
- pLidUp = 0
- pLidTimer = VOID
- soundFX2("strainer_on_mglass", 0, 0)
- mSetOrigMember(me)
- end if
- end
-
- on mPopTop me, Force
- if not pLidUp then
- if not Force then
- if voidp(pLidTimer) then
- pLidTimer = nowTicks()
- exit
- else
- if ticksSince(pLidTimer) < 15 then
- exit
- end if
- end if
- end if
- soundFX2("strainer_off_mglass", 0, 0)
- mSetLidUpMember(me)
- pLidUp = 1
- mupdateDisplay(me)
- end if
- end
-
- on mouseEnter me
- if mInHotRect(me) then
- pTimer = nowTicks()
- pOverItem = 1
- pLidTimer = VOID
- if draggingBarTopGlass() then
- exit
- end if
- showToolTip(pSpr, pGlassType)
- end if
- end
-
- on mupdateDisplay me
- global gLastVessel
- gLastVessel = pGlassType
- pContentString = buildVesselContentList(pSpr, pGlassType, " The Mixing Glass is Empty")
- showDrinkContents(pGlassType, pContentString, VOID)
- end
-
- on mInHotRect me
- return inside(the mouseLoc, pHotRect)
- end
-
- on mouseWithin me
- if mInHotRect(me) then
- if draggingBottleOrSpoon() and not pPouring then
- mPopTop(me)
- else
- if draggingIngredient() then
- pTimer = nowTicks()
- else
- if tipTickRange(pTimer) then
- forceToolTip(pSpr, pGlassType)
- mupdateDisplay(me)
- else
- dismissToolTip()
- end if
- end if
- end if
- else
- mouseLeave(me)
- end if
- end
-
- on mouseLeave me
- if not pPouring and draggingBottleOrSpoon() then
- mReplaceTop(me)
- end if
- pOverItem = 0
- if not draggingSpoon() then
- hideToolTip()
- hideDrinkContents()
- end if
- end
-
- on mouseDown me
- if the doubleClick then
- exit
- end if
- if draggingBottleOrSpoon() and not pPouring then
- mPopTop(me, 1)
- if draggingBottleThang() then
- pourIt(mGetReceiveSound(me))
- end if
- else
- if pPouring then
- mReplaceIt(me)
- replaceDraggingAnything()
- else
- replaceDraggingAnything()
- mSetOrigMember(me)
- sendSprite(gFloatSprite, #mPickUpBottle, pSpr, 1, VOID, pGlassType, mGetPourSound(me))
- pPouring = 1
- pSpr.member = pNoShadow
- sendSprite(pGlassMask, #mHideDrink)
- sendSprite(pGlassIce, #mHideDrink)
- updateStage()
- end if
- end if
- end
-
- on mGetReceiveSound me
- if mHasIce(me) then
- soundName = "water_into_mglass_wice"
- else
- soundName = "water_into_mglass"
- end if
- return soundName
- end
-
- on mGetPourSound me
- if mIsEmpty(me) then
- soundName = VOID
- else
- soundName = "strain_mglass"
- end if
- return soundName
- end
-
- on mStirred me
- if countStirrableIngredients(pContents) > 1 then
- pContents[#stir] = 1
- end if
- end
-
- on mIsHoldingVolume me
- return calcContents(pContents)
- end
-
- on mIsHoldingLiquor me
- return calcLiquorContents(pContents)
- end
-
- on mIsHoldingLiquid me
- return calcLiquidContents(pContents)
- end
-
- on mIsHoldingPourable me
- return calcPourableContents(pContents)
- end
-
- on mIsEmpty me
- return calcEmpty(pContents)
- end
-
- on mHasIce me
- if voidp(pContents[#ice]) then
- return 0
- else
- return integer(pContents[#ice])
- end if
- end
-
- on mOverItem me, bottleSprite, spoutLoc
- if pPouring then
- return 0
- else
- withinHotRect = inside(spoutLoc, pHotRect)
- if withinHotRect then
- if pOverItem then
- mouseWithin(me)
- else
- mouseEnter(me)
- end if
- else
- end if
- return withinHotRect
- end if
- end
-
- on mReplaceIt me
- mSetOrigMember(me)
- pSpr.visible = 1
- sendSprite(pGlassMask, #mShowDrink)
- sendSprite(pGlassIce, #mShowDrink)
- pTilt = #left
- pPouring = 0
- end
-
- on mFill me, ingredient, liquidColor
- return fillVessel(me, ingredient, liquidColor)
- end
-